﻿using System.IO;
using System.Linq;

namespace Ipmce.RemoteVoting.Common.Tools.CardReader.ImageParsing
{
	class BiometricData : LdsTagElement
	{
		public IBiometricDataBlock BiometricDataBlock { get; set; }

		protected override int ParseTag(byte[] data, int offset)
		{
			var tag = BioInfoTags.BiometricDataTags.FirstOrDefault(
				p => !p.Where((t, i) => t != data[offset + i]).Any());
			if (tag == null)
				throw new InvalidDataException();

			return offset + tag.Length;
		}

		public BiometricData()
			: base(BioInfoTags.BiometricDataTags.First(), true, null, false)
		{
			/* Это для dg2, тип создаваемого блока данных должен 
             * спускаться сюда как параметр (i.e. другие для dg3, dg4)
             */
			BiometricDataBlock = new FacialRecord();
			Children.Add(BiometricDataBlock);
		}

		public BiometricData(IBiometricDataBlock bdb)
			: base(BioInfoTags.BiometricDataTags.First(), true, null, false)
		{
			BiometricDataBlock = bdb;
			Children.Add(bdb);
		}
	}
}